The Clean Architectureの右下の図
The Clean Architectureの右下の図
https://gyazo.com/f99f84089a0cf9127ed0956770435066
図の矢印の意味
白抜き矢印は汎化 (?)
A→BのときAがBを継承する
黒矢印
A→Bのとき、A中でBを使用する
code:関係のイメージ.ts
interface InputPort {..}
interface OutputPort {..}
class UseCaseInteractor extends InputPort { // InputPortを継承
method(o: OutputPort) { // OutputPortを使用
o.get();
}
}
class Presenter extends OutputPort{..} // OutputPortを継承
class Controller {
method(i: InputPort) { // InputPortを使用
i.get();
}
}
#??
CA:Gatewaysの扱いは?
Input PortとOutput Portと依存関係逆転の原則 (DIP)について
依存関係逆転の原則 (DIP)に書いた議論と全く同じ事が起こる
何も考えずに実装するとこうなる
https://gyazo.com/7105353e57b898fa93ad70f97af6610b
しかしこれでは、内側が外側に依存することになるのでどうにしかして避けたい
依存関係逆転の原則 (DIP)を使って、インターフェースを介在させる
https://gyazo.com/5de08e64bb318f3b36c9a10e57213fdc
#??
最初の方の図の矢印の向きはこれ良いのかな
白抜き実線矢印の汎化がよくわかっていない
これだけの説明ならInput Portの存在は不要になるので、理解に何かが抜けている
Input/Output Portはインターフェースだが、それの実装をどこでするのか